package com.ruoyi.qiuyue.service.impl;

import java.time.LocalDateTime;
import java.util.*;

import com.ruoyi.qiuyue.common.MusicConstat;
import com.ruoyi.qiuyue.domain.MusicUser;
import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.service.ISysConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import com.ruoyi.qiuyue.mapper.MusicSongMapper;
import com.ruoyi.qiuyue.domain.MusicSong;
import com.ruoyi.qiuyue.service.IMusicSongService;

/**
 * 音乐管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-05-21
 */
@Service
public class MusicSongServiceImpl implements IMusicSongService 
{
    @Autowired
    private MusicSongMapper musicSongMapper;

    @Autowired
    private ISysConfigService configService;

    /**
     * 查询音乐管理
     * 
     * @param id 音乐管理主键
     * @return 音乐管理
     */
    @Override
    public MusicSong selectMusicSongById(Long id)
    {
        return musicSongMapper.selectMusicSongById(id);
    }

    /**
     * 查询音乐管理列表
     * 
     * @param musicSong 音乐管理
     * @return 音乐管理
     */
    @Override
    public List<MusicSong> selectMusicSongList(MusicSong musicSong)
    {
        return musicSongMapper.selectMusicSongList(musicSong);
    }

    /**
     * 新增音乐管理
     *  删除该类型的主页缓存
     * @param musicSong 音乐管理
     * @return 结果
     */
    @CacheEvict(value = {"Home"},key = "#musicSong.type")
    @Override
    public int insertMusicSong(MusicSong musicSong)
    {
        musicSong.setCreateTime(new Date());
        return musicSongMapper.insertMusicSong(musicSong);
    }

    /**
     * 修改音乐管理
     * 
     * @param musicSong 音乐管理
     * @return 结果
     */
    @CacheEvict(value = {"Home"},key = "#musicSong.type")
    @Override
    public int updateMusicSong(MusicSong musicSong)
    {
        return musicSongMapper.updateMusicSong(musicSong);
    }

    /**
     * 批量删除音乐管理
     *  删除所有缓存
     * @param ids 需要删除的音乐管理主键
     * @return 结果
     */
    @CacheEvict(value = {"Home"},allEntries = true)
    @Override
    public int deleteMusicSongByIds(Long[] ids)
    {
        return musicSongMapper.deleteMusicSongByIds(ids);
    }

    /**
     * 删除音乐管理信息
     * 
     * @param id 音乐管理主键
     * @return 结果
     */
    @CacheEvict(value = {"Home"},allEntries = true)
    @Override
    public int deleteMusicSongById(Long id)
    {
        return musicSongMapper.deleteMusicSongById(id);
    }

    /**
     * 根据类别查找音乐信息
     * @param type
     * @return
     */
    @Override
    public List<MusicSong> getMusicListByType(String type) {
        MusicSong query = new MusicSong();
        query.setType(type);
        List<MusicSong> musicSongs = musicSongMapper.selectMusicSongList(query);
        return musicSongs;
    }

    /**
     * 查询指定个数类别的音乐
     * @param type
     * @param size
     * @return
     */
    @Override
    public List<MusicSong> getMusicListByType(String type, int size) {
        return musicSongMapper.selectMusicByType(type, size);
    }

    /**
     * 模糊查询歌名及歌手的数据
     * @param query
     * @return
     */
    @Override
    public List<MusicSong> searchByNameOrAuthor(String query) {
        return musicSongMapper.selectMusicByLikeNameOrAuthor(query);
    }

}
